Prerequisites
Successful completion of the Foundations of Programming Course
Objectives
Learn to program using an imperative language, understanding the syntax and semantics of the language ANSI C. Learn basic sorting and searching algorithms. Learn to choose, create and use data structures suitable to the problems in question. Learn to develop iterative and recursive algorithms. Acquire notions of the complexity of the algorithms applied to solve a given problem in order to chose those that are more efficient.
Program
Introduction to imperative programming and to the C programming language. Introduction to algorithm complexity. Sorting algorithms: direct sort, selection sort, bubblesort, quicksort, mergesort. Data types: stacks, queues, priority queues and heaps. Searching in trees. Dynamic data structures. Binary trees. Balanced binary trees. Hash tables. Colision resolution by chaining and open addressing. Double hashing.
Evaluation Methodology
Exam (60%) + 2 Individual Projects + 1 Practical Test (40%).
Cross-Competence Component
There is no explicit component of soft-skills within this UC however the development of 2 individual projects will promote student's transversal competences in Critical Thinking and Intra-personal Competences.
Laboratorial Component
Programming Exercises to be developed every week following the subjects learned in lectures
Programming and Computing Component
This course is offered in a degree where the skills defined by the Computing and Programming Commission are already satisfied.
More information at: https://fenix.tecnico.ulisboa.pt/cursos/lerc/disciplina-curricular/845953938490008